/**
 * 
 */
package modelo.Tests;

import modelo.AlgoHero.Cancion;
import modelo.AlgoHero.CancionTraducida;
import modelo.AlgoHero.CompasTraducido;
import modelo.AlgoHero.FactoryElementos;
import modelo.AlgoHero.ObjetoTraducido;
import modelo.AlgoHero.PartituraTraducida;
import modelo.AlgoHero.Principal;
import modelo.AlgoHero.TipoElementoReproducible;
import junit.framework.TestCase;

/**
 * @author Hernan G Gonzalez
 *
 */
public class IntegracionTest extends TestCase{

	public void testIntegracion(){
		

		Cancion cancion = Principal.Deserealize("testIntegracion.xml");
		
		ObjetoTraducido cancionTraducida = cancion.traducir();
		
		assertTrue(cancionTraducida.compareTo(this.getCancionTraducida()));
		
	}
	
	
	public ObjetoTraducido getCancionTraducida (){
		
		PartituraTraducida partitura1 = new PartituraTraducida ();
		PartituraTraducida partitura2 = new PartituraTraducida ();
		PartituraTraducida partitura3 = new PartituraTraducida ();
		PartituraTraducida partitura4 = new PartituraTraducida ();
		
		
		partitura1.add(FactoryElementos.crearElemento(TipoElementoReproducible.INICIAL));
		partitura1.add(FactoryElementos.crearElemento(TipoElementoReproducible.MEDIO));
		partitura1.add(FactoryElementos.crearElemento(TipoElementoReproducible.MEDIO));
		partitura1.add(FactoryElementos.crearElemento(TipoElementoReproducible.FINAL));
		
		partitura2.add(FactoryElementos.crearElemento(TipoElementoReproducible.INICIAL));
		partitura2.add(FactoryElementos.crearElemento(TipoElementoReproducible.FINAL));
		partitura2.add(FactoryElementos.crearElemento(TipoElementoReproducible.INICIAL));
		partitura2.add(FactoryElementos.crearElemento(TipoElementoReproducible.FINAL));
		
		partitura3.add(FactoryElementos.crearElemento(TipoElementoReproducible.INICIAL));
		partitura3.add(FactoryElementos.crearElemento(TipoElementoReproducible.MEDIO));
		partitura3.add(FactoryElementos.crearElemento(TipoElementoReproducible.MEDIO));
		partitura3.add(FactoryElementos.crearElemento(TipoElementoReproducible.FINAL));
		
		partitura4.add(FactoryElementos.crearElemento(TipoElementoReproducible.INICIAL));
		partitura4.add(FactoryElementos.crearElemento(TipoElementoReproducible.FINAL));
		partitura4.add(FactoryElementos.crearElemento(TipoElementoReproducible.INICIAL));
		partitura4.add(FactoryElementos.crearElemento(TipoElementoReproducible.FINAL));
		
		CompasTraducido compas1 = new CompasTraducido();
		CompasTraducido compas2 = new CompasTraducido();
		
		compas1.add(partitura1);
		compas1.add(partitura2);

		compas2.add(partitura4);
		compas2.add(partitura3);
		
		CancionTraducida cancion = new CancionTraducida (4);
		
		cancion.add(compas1);
		cancion.add(compas2);
		
		return cancion;
		
		
	}
	
}